# 07 Python描述符笔记 Python类定义的时候,在类的内部通过定义描述符,控制类和实例在`set`, `delete`, `get`是的行为; 通过.操作符获取数据描述符的优先级: 1. 数据描述符:定义了__set__或者__delete__的类属性对象 2. instance.__dict__ 3. 非数据描述符: 只定义了__get__ **示例:** ```Python3 class Descriptor: def __get__(self, instance, owner): print(f"获取: instance={instance}, owner={owner}") return "some_value" def __set__(self, instance, value): print(f"设置: instance={instance}, value={value}") def __delete__(self, instance): print(f"删除: instance={instance}") class MyClass: attr = Descriptor() ``` 典型用法: 1. 底层方法绑定self, class的实现,所有的类方法都是具备__get__的非数据描述符; 2. property的实现; 3. 实现只读属性,或者只写属性机制;